home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 September / PCWorld_2004-09_cd.bin / software / topware / winamp / winamp504_full.exe / $R0 / Winamp Modern / titlebar.m < prev    next >
Text File  |  2004-07-01  |  3KB  |  105 lines

  1. #include <lib/std.mi>
  2.  
  3. #define MARGIN 0
  4.  
  5. Function resizeObjects();
  6.  
  7. Global GuiObject left, right, center;
  8. Global Text tcenter;
  9. Global Layer lcenter;
  10. Global Group sg;
  11. Global int padleft, padright;
  12.  
  13. System.onScriptLoaded() {
  14.  
  15.   padleft = 0;
  16.   padright = 0;
  17.  
  18.   sg = getScriptGroup();
  19.  
  20.   if (sg == NULL) {
  21.     messageBox("titlebar.maki can only run within a group", "Error", 0, "");
  22.     return;
  23.   }
  24.  
  25.   left = sg.findObject(getToken(getParam(), ";", 0));
  26.   center = sg.findObject(getToken(getParam(), ";", 1));
  27.   if (center != NULL) {
  28.     tcenter = center.findObject("window.titlebar.title");
  29.     lcenter = center.findObject("window.titlebar.title.overlay");
  30.   }
  31.   right = sg.findObject(getToken(getParam(), ";", 2));
  32. }
  33.  
  34. // backward compatibility with prerelease notify trick
  35. sg.onNotify(String cmd, String param, int a, int b) {
  36.   String _command = getToken(cmd, ",", 0);
  37.   String _param = getToken(cmd, ",", 1);
  38.   if (_command == "padtitleright" || _command == "padtitleright")
  39.     onSetXuiParam(_command, _param);
  40. }
  41.  
  42. System.onSetXuiParam(String param, String value) {
  43.   if (param == "padtitleright") {
  44.     padright = padright + StringToInteger(value);
  45.     resizeObjects();
  46.   }
  47.   if (param == "padtitleleft") {
  48.     padleft = padleft + StringToInteger(value);
  49.     resizeObjects();
  50.   }
  51. }
  52.  
  53. resizeObjects() {
  54.   int text_width = 0;
  55.   int layout_width = 0;
  56.   int group_width = sg.getWidth();
  57.  
  58.   Layout l = sg.getParentLayout();
  59.   layout_width = l.getWidth();
  60.  
  61.   if (center != NULL) {
  62.     text_width = center.getAutoWidth();
  63.   }
  64.  
  65.   int lx = (layout_width - text_width) / 2;
  66.   lx = l.clientToScreenX(lx);
  67.   lx = sg.screenToClientX(lx);
  68.   lx = lx - sg.getLeft();
  69.  
  70.   if (center != NULL) {
  71.     center.setXmlParam("x", IntegerToString(lx));
  72.     center.setXmlParam("relatx", "0");
  73.     center.setXmlParam("w", IntegerToString(text_width));
  74.     center.setXmlParam("relatw", "0");
  75.  
  76.     lcenter.setXmlParam("x", IntegerToString(lx));
  77.     lcenter.setXmlParam("relatx", "0");
  78.     lcenter.setXmlParam("w", IntegerToString(text_width));
  79.     lcenter.setXmlParam("relatw", "0");
  80.  
  81.   }
  82.  
  83.   if (left != NULL) {
  84.     left.setXmlParam("x", IntegerToString(padleft));
  85.     left.setXmlParam("relatx", "0");
  86.     left.setXmlParam("w", IntegerToString(lx-padleft-MARGIN));
  87.     left.setXmlParam("relatw", "0");
  88.   }
  89.   if (right != NULL) {
  90.     right.setXmlParam("x", IntegerToString(lx+text_width+MARGIN+1));
  91.     right.setXmlParam("relatx", "0");
  92.     right.setXmlParam("w", "-" + IntegerToString(lx+text_width+1+padright+MARGIN+1)); //IntegerToString(group_width-(lx+text_width)));
  93.     right.setXmlParam("relatw", "1");
  94.   }
  95. }
  96.  
  97. tcenter.onTextChanged(string newtext) {
  98.   resizeObjects();
  99. }
  100.  
  101. sg.onResize(int x, int y, int w, int h) {
  102.   resizeObjects();
  103. }
  104.  
  105.